// $Id: nodepartitioniterative.h 72 2004-12-02 15:03:28Z jonas $
#ifndef NODEPARTITIONITERATIVE_H
#define NODEPARTITIONITERATIVE_H

#include "nodepartition.h"

/**
 * @todo Write documentation
 * This class does nothing by itself. To make it useful, inherit from it and a Node class (see NodeVanillaPartitionDepth for example).
 * @todo Make multi inherit overload generateRequestOrderList and call this, give "(Node *) this" as parameter to this constructor...
 */
class NodePartitionIterative : public NodePartition {
public:
	NodePartitionIterative();

	virtual bool requestFile(File *, int);

	void discriminateRequestOrderList(std::list<KeyDistanceHelper> &);

	virtual bool requestFile(Node *, NodeRequestFileParameters *) = 0;

private:
	/// This data member is only used during file requests to keep the current partition search depth avaliable everywhere in a trnsparent maner.
	int m_searchPartition;
};

#endif
